package ren.colorful.learnjdk;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

public class Client {
	public static void main(String[] args) {
		//需要代理的真实对象
		Subject realSubject = new RealSubject();
		
		//我们要代理哪个真实对象,就将该真实对象穿进去,最后通过该真实对象来调用其方法
		InvocationHandler handler = new DynamicProxy(realSubject);
		
		/**
		 * 通过Proxy的newProxyInstance方法来创建我们的代理对象,我们这里需要三个参数
		 * 
		 */
		
		Subject subject = (Subject)Proxy.newProxyInstance(handler.getClass().getClassLoader(), realSubject.getClass().getInterfaces(), handler);
		
		System.out.println(subject.getClass().getName());
		subject.rent();
		subject.hello("world");
	}
	
}
